//
//  main.cpp
//  557.反转字符串中的单词 III
//
//  Created by Yan Zihao on 2024/9/30.
//
//给定一个字符串 s ，你需要反转字符串中每个单词的字符顺序，同时仍保留空格和单词的初始顺序。
#include <iostream>
#include<string>
using namespace std;

/*class Solution
{
public:
    string reverseWords(string s)
    {
        int i = 0;
        int j = 0;
        while(s[i] != s.npos)
        {
            for(i = 0;s[i] != ' ';i++)
            {
                
            }
            reverse(s.begin()+j,s.begin()+i);
            j = i;
        }
        return s;
    }
};*/

class Solution
{
public:
    string reverseWords(string s)
    {
        int i = 0;
        int j = 0;
        
        while (i <= s.size())
        {
            // 找到一个单词的末尾（空格或者字符串结尾）
            while (i < s.size() && s[i] != ' ')
            {
                i++;
            }
            // 反转当前单词
            reverse(s.begin() + j, s.begin() + i);
            // 更新 j 为下一个单词的起点
            j = i + 1;
            // 跳过空格
            i++;
        }
        
        return s;
    }
};
